package com.xgzit.xgzmall.order;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

/**
* 使用RabbitMq
 *  1、引入maven依赖，RabbitAutoConfiguration 就会自动生效
 *  2、自动配置 RabbitTemplate、AmqpAdmin、CachingConnectionFactory、RabbitMessagingTemplate
 *      所有是属性都是在 @ConfigurationProperties(prefix = "spring.rabbitmq") 进行绑定
 *  3、配置文件中配置
 *  4、@EnableRabbit 开启
 *  5、监听消息 @RabbitListener 或者 @RabbitHandler; 必须开启 @EnableRabbit
 *     @RabbitListener 可以标在类+方法  监听哪些队列即可
 *     @RabbitHandler 只能标在方法上  重载区分不同的消息
 *
 *Seata 控制分布式事务
 * 1、每一个微服务都必须创建 undo_Log 表
 * 2、安装事务协调器 seata-server  下载地址见官网 快速开始
 * 3、整合 stata-service 0.7.0
 *      1)、导入依赖  spring-cloud-starter-alibaba-seata  会自动加上seata-all  seata-spring-boot-starter
 *      2）、启动下载的 seata-server
 *          registry.conf 注册中心相关配置  修改注册在哪，以及配置在哪
 *      3)、想要使用seata 需要配置代理数据源
 *      4）、每个微服务都需要导入 registry.conf  file.conf
 *      5）、启动分布式事务
 *      6）、分布式大事务 入口 标注@GlobalTransactional 小事务还是用@Transactional
* */
@EnableAspectJAutoProxy(exposeProxy = true)
@EnableFeignClients
@EnableRedisHttpSession
@EnableRabbit
@EnableDiscoveryClient
@SpringBootApplication
public class XgzmallOrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(XgzmallOrderApplication.class, args);
    }

}
